#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <string.h>

#include "cola.h"
#include "parser.h"

void getParam(const char *line, char *param,size_t length)
{
	strncpy(param,line,length);
	param[length] = '\0';
}


int getCommand(char **command, char *line)
{
	bool continues = true;
	size_t contador = 0;
	while(continues)
	{
		if(line[contador] == ' ' || line[contador] == '\n' || line[contador] == '\0')
		{				
			getParam(line,*command,contador);
			continues = false;
		}
		contador++;
	}
	
	return contador;
}

cola_t *parse_parameters(const char line[])
{	
	bool continues = true;
	size_t last_space = 0;
	size_t contador = 0;
	
	cola_t *cola = cola_crear();	
	if(!cola)
		return NULL;
	
	while(continues)
	{	
		if(line[contador] == '\n' || line[contador] == '\0')
		{
			if(contador != last_space)
			{	
				char *param = malloc(sizeof(char)*(contador -last_space +1));
				if(!param)
				{
					cola_destruir(cola,NULL);
					return NULL;
				}					
					
				getParam(&line[last_space], param,contador -last_space);
				
				if(!cola_encolar(cola,param))
				{
					fprintf(stderr,"ERROR: encolar devuelve falso\n");
					cola_destruir(cola,NULL);
					return NULL;
				}
				
			}
			
			continues = false;				
		}
		else if(line[contador] == ',' || line[contador] == ' ')
		{
			char *param = malloc(sizeof(char)*(contador -last_space +1));
			if(!param)
			{
				cola_destruir(cola,NULL);
				return NULL;
			}
				
			getParam(&line[last_space],param,contador -last_space);
			
			if(!cola_encolar(cola,param))
			{
				fprintf(stderr,"ERROR: encolar devuelve falso\n");
				cola_destruir(cola,NULL);
				return NULL;
			}
			
			last_space = contador+1;
		}
			
		contador++;
	}
	
	return cola;
}
